<?php
/**
* 
* ShopWindow Toolset
* 
* Copyright (C) 2008 Digital Window Ltd.
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
*/


require_once('class.api_client.php');


/**
 * Encapsulates the corresponding API functionality
 *
 */
class api_category_path extends api_client
{
	var $iCategoryId = null; 	// the id of category to get the path for



	/**
	 * Gets an array of categories
	 *
	 * @copyright	DigitalWindow
 	 * @author		Kostas Melas <kostas@digitalwindow.com>
 	 *
	 * @param 	int		 $oParams->iCategoryId
	 * @return 	array	 of categories
	 */
	function getCategoryPath($oParams)
	{
		// sanity checks
		if ( $oParams->iCategoryId > 0) {
			$this->iCategoryId = intval($oParams->iCategoryId);
		}
		else {
			return false;
		}

        $aParams = array('iCategoryId' => $this->iCategoryId);


       	// make the SOAP call
        $this->call('getCategoryPath', $aParams);


        $aCategories = array();

		// check not empty
		if ( !empty( $this->oResponse->oCategory ) ) {
	        // re-assign to be keyed by id
	        foreach ( $this->oResponse->oCategory as $oCategory ) {
				$aCategories[(is_numeric($oCategory->iParentId) ? $oCategory->iParentId : 0 )] = $oCategory;
	        }
		}

        $aCategoryList = array();
        $iPointer = 0;
        
        //Loop through the categorys returned reordering each parent id
        for ($i = 0; $i <= count($aCategories); $i++) {
        	if (isset($aCategories[$iPointer])) {
        		$aCategoryList[] = $aCategories[$iPointer];
        		$iPointer = $aCategories[$iPointer]->iId;
        	}
        	else {
        		break;
        	}
        }
		
        // Replace category array with reordered list //
        $aCategories = $aCategoryList;

		# FILTER CATEGORIES
    	$aCategories = $this->filterCategories($aCategories);
    	
        return $aCategories;
	}

} // class


?>